Animation creation and management in presentation application programs

ABSTRACT

An animation timeline is analyzed to determine one or more discrete states. Each discrete state includes one or more animation effects. The discrete states represent scenes of a slide in a slide presentation. The concepts of scenes allows user to view a timeline of scenes, open a scene, and direct manipulate objects in the scene to author animations. The animations can include motion path animation effects, which can be directly manipulated utilizing a motion path tweening method. To aid in direct manipulation of a motion path of an object, a ghost version of the object can be shown to communicate to a user the position of the object after a motion path animation effect that includes the motion path is performed. The ghost version may also be used to show a start position when a start point is manipulated.

CROSS REFERENCE TO RELATED APPLICATIONS

This patent application is a continuation of co-pending U.S. patentapplication Ser. No. 13/295,110, entitled “Animation Creation andManagement in Presentation Application Programs,” filed, Nov. 14, 2011,which is herein incorporated by reference in its entirety.

BACKGROUND

Presentation application programs, such as MICROSOFT POWERPOINT,available from Microsoft of Redmond, Wash., allow users to createindividual pages or “slides” for presentation in the form of a slideshow. Each slide may contain text, graphics, sound, videos, and otherobjects. Animations may be applied to certain objects in a slide, suchas text and graphics, to enhance the slide show.

Currently, MICROSOFT POWERPOINT's animation user interface (“UI”)requires users to select an object, apply an animation primitive, andthen adjust settings through a series of drop-down menus, spinners, anddialogs. Animation triggers include “On click”, in which an animationeffect is applied upon the click of the slide; “With previous”, in whichan animation effect is played at the same time as the previous item inthe animation list or on load of the slide if the effect is first in theanimation list; and “After previous”, in which an animation effect isplayed immediately following the previous item in the animation list.Navigating the current MICROSOFT POWERPOINT user interface may becumbersome to use for some users, and may prevent others from takingadvantage of the animation features included in the program.

One particular type of animation effect is a motion path animationeffect. When a user wants to animate an object utilizing a motion pathanimation effect, the user must provide an initial state for the object,a final state for the object, and define a type of path along which theobject will move when the motion path animation effect is executed. Thetype of motion path may be a pre-defined motion path or a custom motionpath. If the motion path is a straight line, the initial state or theend state can be easily adjusted by simply redrawing the line in betweenthe two states. If the motion path is curved, however, then additionallogic that is needed to properly scale the motion path to maintain themotion path itself. Moreover, when manipulating a motion path, it ishelpful to know the end state of the motion path animation effect toallow for confident re-positioning of the end state.

It is with respect to these and other considerations that the disclosuremade herein is presented.

SUMMARY

Concepts and technologies are described herein for creating and managinganimations in a presentation application program. In accordance with theconcepts and technologies disclosed herein, an animation timeline isanalyzed to determine one or more discrete states. Each discrete stateincludes one or more animation effects. The discrete states representscenes of a slide in a slide presentation. The concepts of scenes allowsuser to view a timeline of scenes, open a scene, and direct manipulateobjects in the scene to author animations. The animations can includemotion path animation effects, which can be directly manipulatedutilizing a motion path tweening method. To aid in direct manipulationof a motion path of an object, a ghost version of the object can beshown to communicate to a user the position of the object after a motionpath animation effect that includes the motion path is performed. Theghost version may also be used to show a start position when a startpoint is manipulated.

According to one aspect disclosed herein, a computer-readable storagemedium includes computer-executable instructions that, when executed bya computer, cause the computer to present an animation pane on a displayconnected to the computer. The animation pane includes a scenes view anda list view. The scenes view of the animation pane includes atransparent scene thumbnail that, upon selection, opens a temporary newscene. The list view includes an animation timeline. The instructionsalso cause the computer to receive a selection of the transparent scenethumbnail from the scenes view, open the temporary new scene, receive auser input including a new animation effect in the temporary new scene,and create a new discrete state in the animation timeline. The newdiscrete state includes the new animation effect. The instructions alsocause the computer to create a new scene from the temporary new scene.The new scene includes the new animation effect. The new scene includesa visualization for the new discrete state. The instructions also causethe computer to create a new scene thumbnail, create a new transparentscene thumbnail, and present, on the display, the new scene thumbnailand the new transparent scene thumbnail in the scenes view of theanimation pane.

According to another aspect disclosed herein, a method for generatingdiscrete states of an animation timeline includes analyzing, by apresentation application program executing on a computer, a plurality ofanimation effects in an animation timeline to determine one or morediscrete states to be generated for the animation timeline, andgenerating, by the presentation application program executing on thecomputer, the one or more of discrete states for the animation timeline,wherein each of the one or more states includes one or more of theplurality of animation effects. In some embodiments, the analyzingoperation of the method includes analyzing the plurality of animationeffects in the animation timeline to determine which of the plurality ofanimation effects in the animation timeline are triggered by auser-controlled trigger, such as, but not limited to an on mouse clicktrigger, or a pre-configured trigger, such as, but not limited to, anafter previous trigger. An animation effect that is triggered by theafter previous trigger or the on mouse click trigger indicates a startof one of the one or more discrete states.

According to yet another aspect disclosed herein, a computer-implementedmethod for defining animations includes receiving, via a presentationapplication program executing on a computer, an input of a motion pathanimation effect for an object. The motion path animation effectincludes a start point for the object, an end point for the object, anda motion path between the start point and the end point. The methodfurther includes receiving, via the presentation application programexecuting on the computer, an input of a new start point and a new endpoint for the object, and scaling, via the presentation applicationprogram executing on the computer, the motion path of the motion pathanimation effect to fit between the new start point and the new endpoint for the object.

According to yet another aspect disclosed herein, a computer-readablestorage medium includes computer-executable instructions that, whenexecuted by a computer, cause the computer to present, on a display thatis in communication with the computer, a canvas and an object on thecanvas. The instructions also cause the computer to receive a motionpath animation effect for the object. The motion path animation effectincludes a start point, an end point, and a motion path between thestart point and the end point. The instructions also cause the computerto generate a ghost version of the object, and present, on the display,the object, the ghost version of the object, the start point, the endpoint, and the motion path on the canvas. The ghost version of theobject is presented in proximity to the end point, and the ghost versionof the object represents the object after the motion path animationeffect has been performed.

It should be appreciated that the above-described subject matter may beimplemented as a computer-controlled apparatus, a computer process, acomputing system, or as an article of manufacture such as acomputer-readable storage medium. These and various other features willbe apparent from a reading of the following Detailed Description and areview of the associated drawings.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intendedthat this Summary be used to limit the scope of the claimed subjectmatter. Furthermore, the claimed subject matter is not limited toimplementations that solve any or all disadvantages noted in any part ofthis disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1-2 are a user interface diagrams illustrating aspects of anexemplary operating environment for various concepts disclosed herein.

FIG. 3 is a diagram illustrating aspects of an animation timeline beforeand after a scene analysis is performed, according to an illustrativeembodiment.

FIGS. 4A-4B are user interface diagrams of an animation paneillustrating aspects of a mechanism for adding a new scene to a slide,according to an illustrative embodiment.

FIGS. 5A-5B are user interface diagrams of an animation paneillustrating aspects of a mechanism for deleting a scene from a slide,according to an illustrative embodiment.

FIG. 6 is a flow diagram illustrating aspects of a method for applyingchanges to a scene, according to an illustrative embodiment.

FIG. 7 is a diagram illustrating a visualization of a motion pathtweening method, according to an illustrative embodiment.

FIG. 8 is a flow diagram illustrating aspects of a method for motionpath tweening, according to an illustrative embodiment.

FIG. 9 is a flow diagram illustrating a scaling subprocess performedduring an operation of the method described in FIG. 8, according to anillustrative embodiment.

FIG. 10 is a diagram illustrating a motion path after the methoddescribed in FIG. 8 and the subprocess described in FIG. 9 have beenperformed and a mechanism for adjusting a height of the motion path,according to an illustrative embodiment.

FIG. 11 is a diagram illustrating a mechanism for motion path visibilitywhen directly manipulating objects on a slide canvas, according to anillustrative embodiment.

FIG. 12 is a computer architecture diagram illustrating an illustrativecomputer hardware and software architecture for a computing systemcapable of implementing aspects of the embodiments presented herein.

FIG. 13 is a diagram illustrating a distributed computing environmentcapable of implementing aspects of the embodiments presented herein.

FIG. 14 is a computer architecture diagram illustrating a computingdevice architecture capable of implementing aspects of the embodimentspresented herein.

FIG. 15 is a diagram illustrating an exemplary tablet device with a userinterface diagram being shown on a display of the tablet device in alandscape mode, according to an illustrative embodiment.

DETAILED DESCRIPTION

The following detailed description is directed to concepts andtechnologies for creating and managing animations in presentationapplication programs. According to the concepts and technologiesdescribed herein an animation timeline is analyzed to determine one ormore discrete states. Each discrete state includes one or more animationeffects. The discrete states represent scenes of a slide in a slidepresentation. The concepts of scenes allows user to view a timeline ofscenes, open a scene, and direct manipulate objects in the scene toauthor animations. The animations can include motion path animationeffects, which can be directly manipulated utilizing a motion pathtweening method. To aid in direct manipulation of a motion path of anobject, a ghost version of the object can be shown to communicate to auser the position of the object after a motion path animation effectthat includes the motion path is performed. The ghost version may alsobe used to show a start position when a start point is manipulated.

While the subject matter described herein is presented in the generalcontext of program modules that execute in conjunction with theexecution of an operating system and application programs on a computersystem, those skilled in the art will recognize that otherimplementations may be performed in combination with other types ofprogram modules. Generally, program modules include routines, programs,components, data structures, and other types of structures that performparticular tasks or implement particular abstract data types. Moreover,those skilled in the art will appreciate that the subject matterdescribed herein may be practiced with other computer systemconfigurations, including hand-held devices, multiprocessor systems,microprocessor-based or programmable consumer electronics,minicomputers, mainframe computers, and the like.

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and in which are shown byway of illustration specific embodiments or examples. Referring now tothe drawings, in which like numerals represent like elements throughoutthe several figures, aspects of a computing system, computer-readablestorage medium, and computer-implemented methodology for creating andmanaging animations in presentation application programs will bepresented.

FIG. 1 is a user interface diagram illustrating aspects of an exemplaryoperating environment for various concepts disclosed herein. Inparticular, FIG. 1 shows an illustrative user interface 100 provided bya presentation application program according to one implementationdisclosed herein. As will be described in greater detail below, the userinterface 100 is utilized, in part, to author animations for objects,such as shapes, graphics, pictures, text, audio, video, charts, graphs,and like objects, to view the animations in one or more scenes of ananimation sequence, and to manage the scenes.

In the illustrated embodiment, the user interface 100 includes a layoutarea 102, a slide selection pane 104, and an animation pane 106. Theconfiguration of the layout area 102, the slide selection pane 104, andthe animation pane 106 is illustrative and is not intended to belimiting in any way. The layout area 102 is utilized to create a layoutof one or more objects on a slide canvas 108 and to directly manipulateone or more of the objects to author animations to create scenes for oneor more slides of a slide presentation.

The slide selection pane 104 is utilized to show slide thumbnails foreach slide that has been created in the active slide presentation. Theseare generally shown slide thumbnails 110. In the illustrated embodiment,the slide selection pane 104 includes a first slide thumbnail 112 for afirst slide and a second slide thumbnail 114 for a second slide. Thesecond slide thumbnail has been selected and, as a result, the contentof the second slide displayed in the slide area 102 on the slide canvas108. As illustrated, the second slide includes a title object 118 and apicture object 120.

As new slides are added to the presentation or as existing slides aredeleted from the presentation, slide thumbnails 110 are respectivelyadded to or deleted from the slide selection pane 104. A new slide maybe added to the presentation by selecting a grayed-out slide thumbnail122 in the slide selection pane 104. Additionally or alternatively, anew slide may be added through a user interface object, such as a userinterface icon or user interface menu that is always visible or that ismade visible as a result of some user input, such as a mouse click,touch input, or voice input.

Each slide in a presentation may include an animation sequence foranimations of the objects within the slide. The animation sequence isrepresented in the animation pane 106 in either a scenes view 124 or alist view 126. The list view 126 includes an animation timelinedepicting each animation of the animation sequence for the selectedslide. An illustrative list view is described in greater detail belowwith reference to FIG. 2. An illustrative animation timeline isdescribed in greater detail below with reference to FIG. 3.

The scenes view 124 includes one or more scenes depicted as scenethumbnails in a timeline of scenes 128. A scene is a discrete state inan animation timeline. The scene thumbnails may appear like the slidethumbnails 110, but are representative of scenes within the selectedslide thumbnail. For example, in the illustrated embodiment, a firstscene represented in the time line of scenes 128 as a first scenethumbnail 130 has been selected and, accordingly, the title object 118and the picture object 120 are displayed in the slide area 102 on theslide canvas 108. If a second scene thumbnail 132 is selected, thelayout included in a second scene of the selected slide is displayed inthe slide area 102 on the slide canvas 108 and so on. The selected scenemay then be edited by adding or deleting objects, manipulating objects,adding or deleting animations, manipulating animations, and so on.

An animation of an object that begins with an “On Mouse Click” triggeroran “After Previous” trigger is identified as the start of a new scene.The “On Mouse Click” causes an animation to begin on click of a mouse.Other inputs such as touch or voice inputs may be used as alternativetriggers for such functionality. The “After Previous” trigger causes ananimation to begin immediately after the previous item in the animationtimeline if the previous item is finished playing. That is, noadditional click or other input is needed trigger the next animation tostart. Additionally, the first animation in the animation timeline maybe the start of a new scene.

Although an “On Mouse Click” trigger is described above, other exemplaryuser-controlled triggers that may be used to denote the start of a newscene are contemplated. Moreover, although an “After Previous” triggeris described above, other exemplary pre-configured triggers that may beused to denote the start of a new scene are contemplated. As such, theuses of an “On Mouse Click” trigger and an “After Previous” triggerherein are intended to be illustrative and should not be interpreted asbeing limiting.

In the illustrated embodiment, the scenes view 124 and the list view 126are selectable via tabs within the animation pane 106. It should beunderstood that other configurations are possible including, but notlimited to, dedicated animation panes for each view. As such, theillustrated embodiment should not be interpreted as being limiting inany way.

Each scene thumbnail in the timeline of scenes 128 may be associatedwith a scene number 134, as in the illustrated embodiment. Moreover,each scene thumbnail in the timeline of scenes 128 may include an iconor other visual representation of the type of trigger that causes thescene to be played. In the illustrated embodiment, a mouse icon 136 isshown adjacent to the second scene thumbnail to indicate that the secondscene thumbnail 132 is triggered by an “On Mouse Click” trigger. As willbe shown in FIG. 3, a clock icon may be used to indicate that aparticular scene is triggered by an “After Previous” trigger. This iconor any other such icon may be relegated to the animation timeline in thelist view 126, may be included in the scenes view 124 and the list view126, or may not be displayed at all. These icons are merely illustrativeand should not be interpreted as being limiting in any way.

The illustrated timeline of scenes 128 includes a line 138 to the nextscene to represent linearity between the scenes. The line 138 extendsthrough each scene thumbnail in the timeline of scenes 128 and ends at atransparent scene thumbnail 140. Selection of the transparent scenethumbnail 140 causes a temporary new scene (not shown) to be shown onthe slide canvas 108. After an animation is received within thetemporary new scene, the temporary new scene becomes a new scene. Thenew scene is then added to the animation timeline of the list view 126as a new discrete state, and a new scene thumbnail (not shown) is addedto the scenes view 124. Another transparent scene thumbnail like thetransparent scent thumbnail 140 then may be added to the timeline ofscenes 128.

Although only a layout area 102, a slide selection pane 104, and ananimation pane 106 have been described, one or more additional areas,panes, or other user interface spaces may be provided in the userinterface 100 concurrently with the above or in various differentinteractive states of the user interface 100. For instance, additionalareas, panes, or other spaces might also be provided for displaying userinterface icons or other types of user interface objects for initiatingsome of the functionality described herein and other functionsincluding, but not limited to, other functions of presentationapplication programs such as MICROSOFT POWERPOINT, available fromMICROSOFT CORPORATION of Redmond, Wash., and other functions notdisclosed herein.

In this regard, it should be appreciated that the user interface 100 andthe remainder of the user interfaces disclosed herein have been greatlysimplified for purposes of discussion. The user interfaces describedherein might include more or fewer components, might be arrangeddifferently, and might operate in a different fashion while stillremaining within the scope of the disclosure provided herein. It shouldalso be appreciated that while various user input devices will bedescribed with respect to the various embodiments disclosed herein,other types of user input mechanisms might also be utilized. Forinstance, although the various embodiments described herein aredisclosed in conjunction with the use of a mouse user input devicecontrolling a mouse cursor, other types of user input devices andmechanisms such as keyboards, touch screens, proximity sensors,accelerometers, voice input, and others may be utilized.

FIG. 2 is a user interface diagram of the user interface 100illustrating additional aspects of an exemplary operating environmentfor various concepts disclosed herein. In the illustrated embodiment,the list view 126 has been selected in the animation pane 106. The listview 126 includes an animation timeline 200. The animation timeline 200includes a list of animations and the objects to which the animationshave been applied. The animation timeline 200 may also include a scenenumber 202 to indicate the scene to which each animation or group ofanimations is associated, as in the illustrated embodiment. As alsoshown in the illustrated embodiment, each animation in the animationtimeline 200 may include an animation icon 204 to indicate a type ofanimation effect or a category of animation effects currently associatedwith the object referenced in an object description 206.

Illustrative categories of animation effects include, but are notlimited to, entrance animation effects, exit animation effects, emphasisanimation effects, and motion path animation effects. Illustrativeentrance animation effect include, but are not limited to, appeareffect, fade effect, fly in, float in, split, wipe, shape, wheel, randombars, grow and turn, zoom, swivel, and bounce. Illustrative exitanimation effects include, but are not limited to, disappear, fade, flyout, float out, split, wipe, shape, wheel, random bars, shrink and turn,zoom, swivel, and bounce. Illustrative emphasis effects include, but arenot limited to, pulse, color pulse, teeter, spin, grow, shrink,desaturate, darken, lighten, transparency, object color, complementarycolor, line color, brush color, font color, underline, bold flash, boldreveal, and wave. Illustrative motion path effects include, but are notlimited to, lines, arcs, turns, shapes, loops, and custom paths.

In the illustrated embodiment, a second scene has been selected and isshown on the slide canvas 108. The second scene includes the titleobject 118, the picture object 120, and a text box object 208. Thesecond scene is shown as being triggered by an “On Mouse Click” trigger,as indicated by the mouse icon 136.

The illustrated animation timeline 200 includes an animation effect forthe picture object 120 and an animation for the text box 208. Inparticular, a motion path animation effect has been applied to thepicture object 120, as indicated by an illustrative motion path icon210, and an appear entrance effect has been applied to the text boxobject 208, as indicated by an illustrative appear icon 212. The motionpath animation effect causes the picture object 120 to move from thecenter of the slide canvas 108 to the right side of the slide canvas108. The motion path along which the picture object 120 moves to reachthe end point at the right side of the slide canvas 108 may be directlymanipulated to create a custom motion path, as will be described ingreater detail below. The appear entrance effect causes the text boxobject 208 to appear on the slide canvas 108. It should be understoodthat these particular animation effects are merely illustrative and arenot intended to be limiting in any way. It also should be understoodthat additional animations may be applied to each object, such as is thecase illustrated for the picture object 120 in the first scene.

FIG. 3 is a diagram illustrating aspects of an animation timeline beforeand after a scene analysis is performed, according to an illustrativeembodiment. The animation timeline before the scene analysis isperformed is illustrated as a before state 300. The animation timelineafter the scene analysis is performed is illustrated as an after state302. It should be understood that the contents of the animation timelinein the before state 300 and the after state 302 are merely illustrativeand are not intended to be limiting in any way. In some embodiments,only the after state 302 is shown in the list view 126 of the animationpane 106. As such, the before state 300 is shown to demonstrate how thepresentation application program analyzes a plurality of animationeffects in an animation timeline to determine one or more discretestates that are to be generated for the timeline and shown in the sceneview 124 of the animation pane 106 as one or more selectable scenethumbnails.

The illustrated before state 300 of the animation timeline includes aplurality of animation effects, shown generally as animation effects304. Each of the animation effects 304 includes an animation icon, shownrepresentatively as an animation icon 306 for a first animation effectof the animation effects 304. Each of the animation effects 304 alsoincludes an object description, shown representatively as an objectdescription 308.

The animation effects 304 are divided into one or more scenes. Asmentioned above, a scene is a discrete state in the animation timeline.The first animation in any given discrete state is an animation that istriggered by an “On Mouse Click” trigger or an “After Previous” trigger.The first animation in the animation timeline also indicates thebeginning of a first scene.

In the illustrated embodiment, the animation effects 304 are dividedinto six scenes 310A-310F. The first scene 310A begins with an animationeffect that is to be applied to OBJECT 1 and ends with an animationeffect that is to be applied to OBJECT 4. The first scene 310A isdemarcated from the second scene 310B by an animation effect that is tobe applied to OBJECT 5 and that is triggered by an “After Previous”trigger, as indicated by an illustrative clock icon 312. The third scene310C is demarcated from the second scene 310B by an animation effectthat is to be applied to OBJECT 6 and that is triggered by an “AfterPrevious” trigger, as also indicated by a clock icon 312. Similarly, thefourth scene 310D is demarcated from the third scene 310C by ananimation effect that is to be applied to OBJECT 7 and that is triggeredby an “After Previous” trigger, as also indicated by a clock icon 312.The fifth scene 310E is demarcated from the fourth scene 310D by ananimation effect that is to be applied to OBJECT 8 and that is triggeredby an “On Mouse Click” trigger, as indicated by a mouse icon 314.Similarly, the sixth scene 310F is demarcated from the fifth scene 310Eby an animation effect that is to be applied to OBJECT 5 and that istriggered by an “On Mouse Click” trigger, as also indicated by a mouseicon 314.

In the before state 300 of the animation timeline, the first animationand each animation that is associated with either an “After Previous”trigger or an “On Mouse Click” trigger are numbered. In the after state302 of the animation timeline, each of the six scenes 310A-310F isnumbered. In other words, animation numbering in the before state 300 ofthe animation timeline user input, such as starting a slide in a slideshow or an “On Mouse Click” trigger, but animation numbering in theafter state 302 is based upon to which scene each animation belongs. Theafter state 302 of the animation timeline is made viewable in the scenesview 126 after the scene analysis.

FIGS. 4A-4B are user interface diagrams of the animation pane 106illustrating aspects of a mechanism for adding a new scene to a slide,according to an illustrative embodiment. FIG. 4A illustrates theanimation pane 106 in the scenes view 124 and FIG. 4B illustrates theanimation pane 106 in the list view 126. FIG. 4A will now be described.

FIG. 4A illustrates a first state 400 of the animation pane 106, asecond state 402 of the animation pane 106, and a third state 404 of theanimation pane 106. The first state 400 of the animation pane 106 showsa transparent scene thumbnail 140. When the transparent scene thumbnail140 is selected, as shown in the second state 402 of the animation pane106, a temporary new scene (not shown) is created. The temporary newscene is displayed on the slide canvas 108. After an object and/oranimation are added to the temporary new scene, the temporary new scenebecomes a new scene, which is represented in the third state 404 of theanimation pane 106 as a new scene thumbnail 406. A new transparent scenethumbnail 408 may be created and positioned after the new scenethumbnail 406, as in the illustrated embodiment. The new transparentscene thumbnail 408 functions like the transparent scene thumbnail 140.

FIG. 4B illustrates the first state 400 of the animation pane 106 andthe third state 406 of the animation pane 106 when the animation pane106 is in the list view 126. The first state 400 of the animation pane106 in the list view 126 is empty to reflect that no scenes exist. It iscontemplated, however, that a user interface object (not shown) may bemade available to facilitate creation of a new scene within the listview 126. The third state 406 of the animation pane 106 in the list view126 shows a new scene animation list 410 including the animation effectsapplied during the new scene represented as the new scene thumbnail 406in the scenes view 124 of FIG. 4A. The second state 404 is notillustrated in FIG. 4B since the new scene animation list 410 does notexist until a new scene is created after an object and/or animation areadded to the temporary new scene.

FIGS. 5A-5B are user interface diagrams of the animation pane 106illustrating aspects of a mechanism for deleting a scene from a slide,according to an illustrative embodiment. FIG. 5A illustrates theanimation pane 106 in the scenes view 124 and FIG. 5B illustrates theanimation pane 106 in the list view 126. FIG. 5A will now be described.

FIG. 5A illustrates a first state 500 of the animation pane 106, asecond state 502 of the animation pane 106, and a third state 504 of theanimation pane 106. The first state 500 of the animation pane 106 showsa first scene thumbnail 506, a second scene thumbnail 508, and atransparent scene thumbnail 140. In the illustrated first state 500, thesecond scene thumbnail 508 has been selected for deletion. The secondscene thumbnail 508 is then deleted from the scenes view 124 of theanimation pane 106 in response a delete input received via a delete keyof a keyboard, a delete software button (not shown) available within theanimation pane 106 or elsewhere within the user interface 100, or inresponse to some other input such as a touch gesture or voice input.After the second scene thumbnail 508 has been deleted, the animationpane 106 is in the second state 502.

The second state 502 of the animation pane 106 shows the first scenethumbnail 506 and the transparent scene thumbnail 140. In theillustrated second state 502, the first scene thumbnail 506 has beenselected for deletion. The first scene thumbnail 506 is then deletedfrom the scenes view 124 of the animation pane 106 in response a deleteinput received in a manner such as described above. After the firstscene thumbnail 506 has been deleted, the animation pane 106 is in thethird state 504. The third state 506 of the animation pane 106 shows thetransparent scene thumbnail 140.

FIG. 5B illustrates the first state 500 of the animation pane 106, thesecond state 502 of the animation pane 106, and the third state 504 ofthe animation pane 106 when the animation pane 106 is in the list view126. The first state 500 of the animation pane 106 in the list view 126shows a first scene animation list 510 and a second scene animation list512. The first scene animation list 510 includes the animation effectsapplied during a first scene of a slide. The second scene animation list512 includes the animation effect applied during a second scene of theslide.

In the illustrated first state 500, the second scene animation list 512has been selected for deletion. The second scene animation list 512 isthen deleted from the list view 126 of the animation pane 106 inresponse a delete input received in a manner such as described above.After the second scene animation list 512 has been deleted, theanimation pane 106 is in the second state 502.

The second state 502 of the animation pane in the list view 126 showsthe first scene animation list 510. The first scene animation list 510has been selected for deletion. After the first scene animation list 510has been deleted, the animation pane 106 is in the third state 502. Thethird state 504 of the animation pane 106 in the list view 126 is emptyto reflect that no scenes exist.

In some cases, it may be desirable to delete a scene that is positionedbetween two scenes. In these cases, after a scene that is positionedbetween two scenes is deleted, the initial state of all objects withinthe next scene after the deleted scene are applied to the final state ofall objects within the scene positioned before the deleted scene tomaintain continuity between the scene positioned before the deletedscene and the scene positioned after the deleted scene.

Scenes may be reordered in the scenes view 124 or the list view 126 inthe animation pane. To reorder a scene, a scene thumbnail or a sceneanimation list is selected and moved to a new location within theanimation pane 106. The presentation application program is configuredto update all scenes from the start range to the end range of theposition change.

After a scene is opened, objects on the slide canvas 108 that areassociated with that scene can be directly manipulated. In someembodiments, any changes that are made to the objects are encoded asanimations in that scene. Alternatively or additionally, animations maybe inserted.

FIG. 6 is a flow diagram illustrating aspects of a method 600 forapplying changes to a scene, according to an illustrative embodiment. Itshould be understood that the operations of the methods disclosed hereinare not necessarily presented in any particular order and thatperformance of some or all of the operations in an alternative order(s)is possible and is contemplated. The operations have been presented inthe demonstrated order for ease of description and illustration.Operations may be added, omitted, and/or performed simultaneously,without departing from the scope of the appended claims.

It also should be understood that the illustrated methods can be endedat any time and need not be performed in its entirety. Some or alloperations of the methods, and/or substantially equivalent operations,can be performed by execution of computer-readable instructions includedon a computer-storage media, as defined below. The term“computer-readable instructions,” and variants thereof, as used in thedescription and claims, is used expansively herein to include routines,applications, application modules, program modules, programs,components, data structures, algorithms, and the like. Computer-readableinstructions can be implemented on various system configurations,including single-processor or multiprocessor systems, minicomputers,mainframe computers, personal computers, hand-held computing devices,microprocessor-based, programmable consumer electronics, combinationsthereof, and the like.

Thus, it should be appreciated that the logical operations describedherein are implemented (1) as a sequence of computer implemented acts orprogram modules running on a computing system and/or (2) asinterconnected machine logic circuits or circuit modules within thecomputing system. The implementation is a matter of choice dependent onthe performance and other requirements of the computing system.Accordingly, the logical operations described herein are referred tovariously as states, operations, structural devices, acts, or modules.These operations, structural devices, acts, and modules may beimplemented in software, in firmware, in special purpose digital logic,and any combination thereof.

In some embodiments, animating a property in a scene propagates thechange to the scenes positioned after that scene. In these embodiments,however, any property in a scene that has been edited may be absolute,meaning changes to the previous scenes do not affect that scene. Forexample, changing the size of an object in a second scene does notaffect the same object in the third scene if that same object has hadthe size property changed in the third scene. However, if the thirdscene does not have an animation for position, changing the position ofthe object in the second scene does affect the third scene.

When a property is manipulated in a scene, the presentation applicationprogram either adds or modifies an animation to apply the animationeffect associated with that animation. The method 600 provides anillustrative example of this logic.

The method 600 begins and proceeds to operation 602, wherein it isdetermined if a property has changed in a current scene or if a propertyhas changed in a previous scene. If it is determined, at operation 602,that a property has changed in the current scene or a property haschanged in the previous scene, the method 600 proceeds to operation 604.At operation 604, it is then determined if the property animationprimitive exists in the current scene. If it is determined, at operation604, that the property animation primitive exists in the current scene,the method 600 proceeds to operation 606. At operation 606, the firstand last such animation primitive is selected and modified according tothe change that was determined to have occurred in operation 602. Themethod 600 then proceeds to operation 608, wherein the method 600 ends.

If it is determined, at operation 604, that the property animationprimitive does not exist in the current scene, the method 600 proceedsto operation 610. At operation 610, the appropriate animation primitiveis added to the end of the current scene. The method 600 then proceedsto operation 606. At operation 606, the first and last such animationprimitive is selected and modified according to the change that wasdetermined to have occurred in operation 602. The method 600 thenproceeds to operation 608, wherein the method 600 ends.

If it is determined, at operation 602, that a property has not changedin the current scene and a property has not changed in the previousscene, the method 600 proceeds to operation 608. The method 600 ends atoperation 608.

FIG. 7 is a diagram illustrating a visualization 700 of a motion pathtweening method, according to an illustrative embodiment. Anillustrative method for motion path tweening is described below withreference to FIGS. 8 and 9. The visualization 700 includes the motionpath 702, a bounding box 704 encompassing the motion path 702, a startpoint 706 of the motion path 702, an end point 708 of the motion path702, a point (Cx, Cy) 710, a direction arrow 712, a vertical reference714, an intermediate end point 716 of the motion path 702, and a finalend point 718 of the motion path 702. The motion path 702 may be anon-linear motion path selected from a set of pre-defined motion pathsfor a motion path animation effect or a custom motion path created by auser.

The bounding box 704 includes a SetBoundRotate(angle) property definingan angle of rotation around the point (Cx, Cy) 710, aSetBoundPosition(x, y) defining x and y coordinates of the point (Cx,Cy) 710 on the slide canvas 108, and a SetBoundSize(width, height)defining a width and height of the bounding box 704. More generally, thebounding box 704 includes a bound rotation property defining an angle ofrotation around a point along the edge of the bounding box 704, a boundposition property defining an x coordinate and a y coordinate of thepoint, and a bound size property defining the size of the bounding boxin width and height components.

The start point 706 is the starting position of an object to which amotion path animation effect including the motion path 702 has beenapplied. The start point 706 may be manipulated by a user, but in theillustrated embodiment remains in line with the vertical reference 714.The end point 708 is the ending position of the object. The point (Cx,Cy) 710 is a point of reference for various operations performed by themotion path tweening method described below. The direction arrow 712indicates the direction towards the final end point 718 of the motionpath 702. In the illustrated embodiment, the final end point 718 hasbeen selected by a user and the motion path 702 is to be scaled toaccommodate the final end point 718 while maintaining the shape of themotion path 702. A method 800 for motion path tweening to accomplish theabove will now be described with reference to FIG. 8 and additionalreference to FIG. 7.

The method 800 begins and proceeds to operation 802, wherein the slidecanvas 108 is presented in the user interface 100 of the presentationapplication program. From operation 802, the method 800 proceeds tooperation 804, wherein an input of an object is received on the slidecanvas 108. From operation 804, the method 800 proceeds to operation806, wherein an input of a motion path animation effect is received forthe object.

In some embodiments, a visual representation of the motion pathanimation effect is shown on the slide canvas 108. The visualrepresentation of the motion path animation effect includes a startpoint, a motion path, and an end point. For purposes of description, themotion path received in operation 806 will be described as the motionpath 702 of FIG. 7. Accordingly, the start point and the end point ofthe motion path will be referred to as the start point 706 and the endpoint 708, respectively, of the motion path 702.

From operation 806, the method proceeds to operation 808, wherein a newend point is received for the object. The new end point may be receivedthrough a direct manipulation of the motion path 702 such that the endpoint 708 of the motion path 702 is moved to the final end point 718. Insome embodiments, a new start point is additionally or alternativelyreceived for the object. From operation 808, the method 800 proceeds tooperation 810, wherein the motion path 702 is scaled to fit between thestart point 706 and the final end point 718. The operation 810 isfurther described below with reference to a scaling subprocess 900 ofFIG. 9. From operation 810, the method 800 proceeds to operation 812,wherein the method 800 ends.

FIG. 9 is a flow diagram illustrating the scaling subprocess 900performed during operation 810 of the method 800 described above withreference to FIG. 8. The subprocess 900 utilizes the following utilitymethods for various calculations. A RotateBounds(angle, point) method isused to rotates the bounding box 704 around the point. AScaleBounds(factorX, factorY, point) method is used to scale thebounding box 704 relative to the point. A GetStart method is used toreturn the start point of the motion path 704 relative to the point (Cx,Cy) 710. A GetEnd method is used to return the end point of the motionpath 704 relative to the point (Cx, Cy) 712. The subprocess 900 will nowbe described with additional reference to FIG. 7 and to these utilitymethods to fit the motion path 702 from the start point 706 to the finalend point 718.

The subprocess 900 begins and proceeds to operation 902, wherein thebounding box 704 is associated with the motion path 702. From operation902, the subprocess proceeds to operation 904, the SetBoundPositionproperty is set. The SetBoundPosition property, as described above,includes x and y coordinates. At operation 904, the SetBoundPositionproperty is provided as SetBoundPosition(newStart.x−GetStart.x,newStart.y−GetStart.y), wherein newStart.x is a x coordinate value of astart point set for the motion path 702 after a manipulation, GetStart.xis a x coordinate value of the start point 706 for the motion path 702before the manipulation, newStart.y is a y coordinate value of a startpoint set for the motion path 702 after the manipulation, and GetStart.yis a y coordinate value of the start point 706 after the manipulation.In FIG. 7, the start point 706 remains unchanged after a manipulation ofthe end point 708. Accordingly, in the illustrated embodiment, theGetStart x and y coordinate value are the same as the newStart x and ycoordinate values. In some embodiments, however, the newStart x and/or ycoordinate values are changed after the manipulation, in which case theappropriate values would be populated for the newStart method. As notedabove, the coordinate values for the GetStart and GetEnd methods arecalculated relative to the point (Cx, Cy) 710.

From operation 904, the subprocess 900 proceeds to operation 906,wherein a distance between the start point 706 and the end point 708 iscalculated. This distance is referred to as the old distance, oroldDistance, which is defined as being equal to the distance between thevalue returned by the GetStart method and the GetEnd method. Fromoperation 906, the subprocess 900 proceeds to operation 908, wherein adistance between the start point 706 and the final end point 718 iscalculated. This distance is referred to as the new distance, ornewDistance, which is defined as being equal to the distance between thevalue returned by the NewStart method and the NewEnd method.

From operation 908, the subprocess 900 proceeds to operation 910,wherein a distance quotient is calculated. The distance quotient iscalculated as the newDistance divided by the oldDistance calculated,respectively, in operations 906 and 908. From operation 910, the methodproceeds to operation 912, wherein the width of the bounding box 704 isscaled relative to the value returned by the GetStart method, or, inother words, the start point 706 relative to the point (Cx, Cy) 710. Thewidth of the bounding box 704 is calculated utilizing the ScaleBoundsmethod, wherein factorX is set to the distance quotient, factorY is setto 1.0, and the point is set to the value returned by the GetStartmethod.

From operation 912, the subprocess 900 proceeds to operation 914,wherein an angle between the start point 706 and the end point 708 iscalculated. This angle is referred to as the old angle, or oldAngle,which is defined as being equal to the angle between the value returnedby the GetStart method and the value returned by the GetEnd method. Fromoperation 912, the subprocess 900 proceeds to operation 916, wherein anangle between the start point 706 and the final end point 718 iscalculated. This angled is referred to as the new angle, or newAngle,which is defined as being equal to the angle between the value returnedby the NewStart method and the value returned by the NewEnd method. Fromoperation 916, the subprocess 900 proceeds to operation 918, wherein anangle quotient is calculated. The angle quotient is equal to thenewAngle divided by the oldAngle.

From operation 916, the subprocess 900 proceeds to operation 920,wherein the RotateBounds method is utilized to rotate the bounding box704 around the value returned by the GetStart method. The angle ofrotation is calculated is set as the value returned in operation 918 forthe angle quotient. From operation 920, the subprocess 900 proceeds tooperation 922. The subprocess 900 ends at operation 922.

FIG. 10 is a diagram illustrating the motion path 702 of FIG. 7 afterthe method 800 and the subprocess 900 of the method 900 have beenperformed. Upon selection of the motion path 702, a height adjustmentbox 1000 is displayed. The height adjustment box 1000 facilitatesmanipulation of the height of the motion path 702 by height adjustmenthandles 1002. Scaling the height of the motion path 702 causes anequally proportionate change of the top and bottom portions of themotion path 702 with respect to a line 1004 intersecting the start point706 and the final end point 718. This ensures the start point 706 andthe final end point 718 of the motion path remain the same. FIG. 10illustrates the height of the motion path 702 before adjustment, afterthe height of the motion path 702 is decreased, and after the height ofthe motion path 702 is increased.

FIG. 11 is a diagram illustrating a mechanism for motion path visibilitywhen directly manipulating objects on a slide canvas, according to anillustrative embodiment. In the illustrated embodiment, an object 1100is displayed on a slide canvas, such as the slide canvas 108 describedabove with reference to FIG. 1. The object 1100 is associated with amotion path animation effect. The motion path animation effect includesa start point 1102, an end point 1104, and a motion path 1106. Themotion path 1106 is illustrated as being linear, but other motion pathshapes are contemplated.

If the motion path animation effect is selected, for example, with acursor 1108, a ghost version 1110 of the object 1100 is generated and isshown on the slide canvas 108. The ghost version 1110 represents whereon the slide canvas 108 the object 1100 will appear when the motion pathanimation effect is performed. The end point 1104 may be dragged to anew position on the slide canvas 108. The ghost version 1110 of theobject 1100 is shown over the new position. If the new position isconfirmed, for example, by releasing a mouse button or removing a fingerfrom a touchscreen to end a drag gesture, the end point 1104 isrepositioned at the new position and the ghost version 1110 is shown inthe new position. The ghost version may also be used to show a startposition when a start point is manipulated.

It should be understood that the ghost version 1110 of the object may betransparent, semi-transparent, colored, emphasized, deemphasized, or insome other way visually differentiated from the object 1100. As such,the illustrated embodiment of a semi-transparent ghost version is notintended to be limiting in any way. It should also be understood thatthe ghost version 1110 need not be positioned such that the end point1104 is in the center of the ghost version 1110 as in the illustratedembodiment. Instead, the ghost version 1110 may be in proximity to theend point 1104. The ghost version 1110 being in proximity to the endpoint 1104 includes the ghost version 1110 at least partiallyintersecting the end point 1104 or being within a pre-defined distancefrom the end point 1104 such that it would be apparent to a user wherethe end position of the object 1100 would be after the motion pathanimation effect is performed.

FIG. 12 illustrates an illustrative computer architecture 1200 for adevice capable of executing the software components described herein forcreating and managing animations. Thus, the computer architecture 1200illustrated in FIG. 12 illustrates an architecture for a servercomputer, mobile phone, a PDA, a smart phone, a desktop computer, anetbook computer, a tablet computer, and/or a laptop computer. Thecomputer architecture 1200 may be utilized to execute any aspects of thesoftware components presented herein.

The computer architecture 1200 illustrated in FIG. 12 includes a centralprocessing unit 1202 (“CPU”), a system memory 1204, including a randomaccess memory 1206 (“RAM”) and a read-only memory (“ROM”) 1208, and asystem bus 1210 that couples the memory 1204 to the CPU 1202. A basicinput/output system containing the basic routines that help to transferinformation between elements within the computer architecture 1200, suchas during startup, is stored in the ROM 1208. The computer architecture1200 further includes a mass storage device 1212 for storing anoperating system 1214 and one or more application programs including,but not limited to, a presentation application program 1216.

The mass storage device 1212 is connected to the CPU 1202 through a massstorage controller (not shown) connected to the bus 1210. The massstorage device 1212 and its associated computer-readable media providenon-volatile storage for the computer architecture 1200. Although thedescription of computer-readable media contained herein refers to a massstorage device, such as a hard disk or CD-ROM drive, it should beappreciated by those skilled in the art that computer-readable media canbe any available computer storage media or communication media that canbe accessed by the computer architecture 1200.

Communication media includes computer readable instructions, datastructures, program modules, or other data in a modulated data signalsuch as a carrier wave or other transport mechanism and includes anydelivery media. The term “modulated data signal” means a signal that hasone or more of its characteristics changed or set in a manner as toencode information in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of the any of the aboveshould also be included within the scope of computer-readable media.

By way of example, and not limitation, computer storage media mayinclude volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer-readable instructions, data structures, program modules orother data. For example, computer media includes, but is not limited to,RAM, ROM, EPROM, EEPROM, flash memory or other solid state memorytechnology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed bythe computer architecture 1200. For purposes the claims, the phrase“computer storage medium” and variations thereof, does not includewaves, signals, and/or other transitory and/or intangible communicationmedia, per se.

According to various embodiments, the computer architecture 1200 mayoperate in a networked environment using logical connections to remotecomputers through a network 1218. The computer architecture 1200 mayconnect to the network 1218 through a network interface unit 1220connected to the bus 1210. It should be appreciated that the networkinterface unit 1220 also may be utilized to connect to other types ofnetworks and remote computer systems. The computer architecture 1200also may include an input/output controller 1222 for receiving andprocessing input from a number of other devices, including a keyboard,mouse, or electronic stylus (not shown in FIG. 12). Similarly, theinput/output controller 1222 may provide output to a display screen, aprinter, or other type of output device (also not shown in FIG. 12).

It should be appreciated that the software components described hereinmay, when loaded into the CPU 1202 and executed, transform the CPU 1202and the overall computer architecture 1200 from a general-purposecomputing system into a special-purpose computing system customized tofacilitate the functionality presented herein. The CPU 1202 may beconstructed from any number of transistors or other discrete circuitelements, which may individually or collectively assume any number ofstates. More specifically, the CPU 1202 may operate as a finite-statemachine, in response to executable instructions contained within thesoftware modules disclosed herein. These computer-executableinstructions may transform the CPU 1202 by specifying how the CPU 1202transitions between states, thereby transforming the transistors orother discrete hardware elements constituting the CPU 1202.

Encoding the software modules presented herein also may transform thephysical structure of the computer-readable media presented herein. Thespecific transformation of physical structure may depend on variousfactors, in different implementations of this description. Examples ofsuch factors may include, but are not limited to, the technology used toimplement the computer-readable media, whether the computer-readablemedia is characterized as primary or secondary storage, and the like.For example, if the computer-readable media is implemented assemiconductor-based memory, the software disclosed herein may be encodedon the computer-readable media by transforming the physical state of thesemiconductor memory. For example, the software may transform the stateof transistors, capacitors, or other discrete circuit elementsconstituting the semiconductor memory. The software also may transformthe physical state of such components in order to store data thereupon.

As another example, the computer-readable media disclosed herein may beimplemented using magnetic or optical technology. In suchimplementations, the software presented herein may transform thephysical state of magnetic or optical media, when the software isencoded therein. These transformations may include altering the magneticcharacteristics of particular locations within given magnetic media.These transformations also may include altering the physical features orcharacteristics of particular locations within given optical media, tochange the optical characteristics of those locations. Othertransformations of physical media are possible without departing fromthe scope and spirit of the present description, with the foregoingexamples provided only to facilitate this discussion.

In light of the above, it should be appreciated that many types ofphysical transformations take place in the computer architecture 1200 inorder to store and execute the software components presented herein. Italso should be appreciated that the computer architecture 1200 mayinclude other types of computing devices, including hand-held computers,embedded computer systems, personal digital assistants, and other typesof computing devices known to those skilled in the art. It is alsocontemplated that the computer architecture 1200 may not include all ofthe components shown in FIG. 12, may include other components that arenot explicitly shown in FIG. 12, or may utilize an architecturecompletely different than that shown in FIG. 12.

FIG. 13 illustrates an illustrative distributed computing environment1300 capable of executing the software components described herein forcreating and managing animations in a presentation application program.Thus, the distributed computing environment 1300 illustrated in FIG. 13can be utilized to execute any aspects of the software componentspresented herein. For example, the distributed computing environment1300 can be utilized to execute aspects of the presentation applicationprogram described herein.

According to various implementations, the distributed computingenvironment 1300 includes a computing environment 1302 operating on, incommunication with, or as part of the network 1304. The network 1304also can include various access networks. One or more client devices1306A-1306N (hereinafter referred to collectively and/or generically as“clients 1306”) can communicate with the computing environment 1302 viathe network 1304 and/or other connections (not illustrated in FIG. 13).In the illustrated embodiment, the clients 1306 include a computingdevice 1306A such as a laptop computer, a desktop computer, or othercomputing device; a slate or tablet computing device (“tablet computingdevice”) 1306B; a mobile computing device 1306C such as a mobiletelephone, a smart phone, or other mobile computing device; a servercomputer 1306D; and/or other devices 1306N. It should be understood thatany number of clients 1306 can communicate with the computingenvironment 1302. Two example computing architectures for the clients1306 are illustrated and described herein with reference to FIGS. 12 and14. It should be understood that the illustrated clients 1306 andcomputing architectures illustrated and described herein areillustrative, and should not be construed as being limited in any way.

In the illustrated embodiment, the computing environment 1302 includesapplication servers 1308, data storage 1310, and one or more networkinterfaces 1312. According to various implementations, the functionalityof the application servers 1308 can be provided by one or more servercomputers that are executing as part of, or in communication with, thenetwork 1304. The application servers 1308 can host various services,virtual machines, portals, and/or other resources. In the illustratedembodiment, the application servers 1308 host one or more virtualmachines 1314 for hosting applications or other functionality. Accordingto various implementations, the virtual machines 1314 host one or moreapplications and/or software modules for providing the functionalitydescribed herein for creating and managing animations in a presentationapplication program. It should be understood that this embodiment isillustrative, and should not be construed as being limiting in any way.The application servers 1308 also host or provide access to one or moreWeb portals, link pages, Web sites, and/or other information (“Webportals”) 1316.

According to various implementations, the application servers 1308 alsoinclude one or more mailbox services 1318 and one or more messagingservices 1320. The mailbox services 1318 can include electronic mail(“email”) services. The mailbox services 1318 also can include variouspersonal information management (“PIM”) services including, but notlimited to, calendar services, contact management services,collaboration services, and/or other services. The messaging services1320 can include, but are not limited to, instant messaging services,chat services, forum services, and/or other communication services.

The application servers 1308 also can include one or more socialnetworking services 1322. The social networking services 1322 caninclude various social networking services including, but not limitedto, services for sharing or posting status updates, instant messages,links, photos, videos, and/or other information; services for commentingor displaying interest in articles, products, blogs, or other resources;and/or other services. In some embodiments, the social networkingservices 1322 are provided by or include the FACEBOOK social networkingservice, the LINKEDIN professional networking service, the MYSPACEsocial networking service, the FOURSQUARE geographic networking service,the YAMMER office colleague networking service, and the like. In otherembodiments, the social networking services 1322 are provided by otherservices, sites, and/or providers that may or may not be explicitlyknown as social networking providers. For example, some web sites allowusers to interact with one another via email, chat services, and/orother means during various activities and/or contexts such as readingpublished articles, commenting on goods or services, publishing,collaboration, gaming, and the like. Examples of such services include,but are not limited to, the WINDOWS LIVE service and the XBOX LIVEservice from Microsoft Corporation in Redmond, Wash. Other services arepossible and are contemplated.

The social networking services 1322 also can include commenting,blogging, and/or micro blogging services. Examples of such servicesinclude, but are not limited to, the YELP commenting service, the KUDZUreview service, the OFFICETALK enterprise micro blogging service, theTWITTER messaging service, the GOOGLE BUZZ service, and/or otherservices. It should be appreciated that the above lists of services arenot exhaustive and that numerous additional and/or alternative socialnetworking services 1322 are not mentioned herein for the sake ofbrevity. As such, the above embodiments are illustrative, and should notbe construed as being limited in any way.

As shown in FIG. 13, the application servers 1308 also can host otherservices, applications, portals, and/or other resources (“otherresources”) 1324. The other resources 1324 can include, but are notlimited to, the presentation application program. It thus can beappreciated that the computing environment 1302 can provide integrationof the concepts and technologies disclosed herein provided herein forcreating and managing animations with various mailbox, messaging, socialnetworking, and/or other services or resources. For example, theconcepts and technologies disclosed herein may utilize objects retrievedfrom various mailbox, messaging, social network, and/or other service orresources for insertion into one or more slides and/or one or morescenes. Animations may be authored for these objects. Moreover, customanimations may be retrieved from these services or resources.

As mentioned above, the computing environment 1302 can include the datastorage 1310. According to various implementations, the functionality ofthe data storage 1310 is provided by one or more databases operating on,or in communication with, the network 1304. The functionality of thedata storage 1310 also can be provided by one or more server computersconfigured to host data for the computing environment 1302. The datastorage 1310 can include, host, or provide one or more real or virtualdatastores 1326A-1326N (hereinafter referred to collectively and/orgenerically as “datastores 1326”). The datastores 1326 are configured tohost data used or created by the application servers 1308 and/or otherdata. Although not illustrated in FIG. 13, the datastores 1326 also canhost or store objects, animations, and/or other data utilized by apresentation application program.

The computing environment 1302 can communicate with, or be accessed by,the network interfaces 1312. The network interfaces 1312 can includevarious types of network hardware and software for supportingcommunications between two or more computing devices including, but notlimited to, the clients 1306 and the application servers 1308. It shouldbe appreciated that the network interfaces 1312 also may be utilized toconnect to other types of networks and/or computer systems.

It should be understood that the distributed computing environment 1300described herein can provide any aspects of the software elementsdescribed herein with any number of virtual computing resources and/orother distributed computing functionality that can be configured toexecute any aspects of the software components disclosed herein.According to various implementations of the concepts and technologiesdisclosed herein, the distributed computing environment 1300 providesthe software functionality described herein as a service to the clients1306. It should be understood that the clients 1306 can include real orvirtual machines including, but not limited to, server computers, webservers, personal computers, mobile computing devices, smart phones,and/or other devices. As such, various embodiments of the concepts andtechnologies disclosed herein enable any device configured to access thedistributed computing environment 1300 to utilize the functionalitydescribed herein for creating and managing animations in a presentationapplication program.

Turning now to FIG. 14, an illustrative computing device architecture1400 for a computing device that is capable of executing varioussoftware components described herein for creating and managinganimations in a presentation application program. The computing devicearchitecture 1400 is applicable to computing devices that facilitatemobile computing due, in part, to form factor, wireless connectivity,and/or battery-powered operation. In some embodiments, the computingdevices include, but are not limited to, mobile telephones, tabletdevices, slate devices, portable video game devices, and the like. Thecomputing device architecture 1400 is applicable to any of the clients1306 shown in FIG. 13. Moreover, aspects of the computing devicearchitecture 1400 may be applicable to traditional desktop computers,portable computers (e.g., laptops, notebooks, ultra-portables, andnetbooks), server computers, and other computer systems, such asdescribed herein with reference to FIG. 12. For example, the singletouch and multi-touch aspects disclosed herein below may be applied todesktop computers that utilize a touchscreen or some other touch-enableddevice, such as a touch-enabled track pad or touch-enabled mouse.

The computing device architecture 1400 illustrated in FIG. 14 includes aprocessor 1402, memory components 1404, network connectivity components1406, sensor components 1408, input/output components 1410, and powercomponents 1412. In the illustrated embodiment, the processor 1402 is incommunication with the memory components 1404, the network connectivitycomponents 1406, the sensor components 1408, the input/output (“I/O”)components 1410, and the power components 1412. Although no connectionsare shown between the individuals components illustrated in FIG. 14, thecomponents can interact to carry out device functions. In someembodiments, the components are arranged so as to communicate via one ormore busses (not shown).

The processor 1402 includes a central processing unit (“CPU”) configuredto process data, execute computer-executable instructions of one or moreapplication programs, and communicate with other components of thecomputing device architecture 1400 in order to perform variousfunctionality described herein. The processor 1402 may be utilized toexecute aspects of the software components presented herein and,particularly, those that utilize, at least in part, a touch-enabledinput.

In some embodiments, the processor 1402 includes a graphics processingunit (“GPU”) configured to accelerate operations performed by the CPU,including, but not limited to, operations performed by executinggeneral-purpose scientific and engineering computing applications, aswell as graphics-intensive computing applications such as highresolution video (e.g., 720P, 1080P, and higher resolution), videogames, three-dimensional (“3D”) modeling applications, and the like. Insome embodiments, the processor 1402 is configured to communicate with adiscrete GPU (not shown). In any case, the CPU and GPU may be configuredin accordance with a co-processing CPU/GPU computing model, wherein thesequential part of an application executes on the CPU and thecomputationally-intensive part is accelerated by the GPU.

In some embodiments, the processor 1402 is, or is included in, asystem-on-chip (“SoC”) along with one or more of the other componentsdescribed herein below. For example, the SoC may include the processor1402, a GPU, one or more of the network connectivity components 1406,and one or more of the sensor components 1408. In some embodiments, theprocessor 1402 is fabricated, in part, utilizing a package-on-package(“PoP”) integrated circuit packaging technique. Moreover, the processor1402 may be a single core or multi-core processor.

The processor 1402 may be created in accordance with an ARMarchitecture, available for license from ARM HOLDINGS of Cambridge,United Kingdom. Alternatively, the processor 1402 may be created inaccordance with an x86 architecture, such as is available from INTELCORPORATION of Mountain View, Calif. and others. In some embodiments,the processor 1402 is a SNAPDRAGON SoC, available from QUALCOMM of SanDiego, Calif., a TEGRA SoC, available from NVIDIA of Santa Clara,Calif., a HUMMINGBIRD SoC, available from SAMSUNG of Seoul, South Korea,an Open Multimedia Application Platform (“OMAP”) SoC, available fromTEXAS INSTRUMENTS of Dallas, Tex., a customized version of any of theabove SoCs, or a proprietary SoC.

The memory components 1404 include a random access memory (“RAM”) 1414,a read-only memory (“ROM”) 1416, an integrated storage memory(“integrated storage”) 1418, and a removable storage memory (“removablestorage”) 1420. In some embodiments, the RAM 1414 or a portion thereof,the ROM 1416 or a portion thereof, and/or some combination the RAM 1414and the ROM 1416 is integrated in the processor 1402. In someembodiments, the ROM 1416 is configured to store a firmware, anoperating system or a portion thereof (e.g., operating system kernel),and/or a bootloader to load an operating system kernel from theintegrated storage 1418 or the removable storage 1420.

The integrated storage 1418 can include a solid-state memory, a harddisk, or a combination of solid-state memory and a hard disk. Theintegrated storage 1418 may be soldered or otherwise connected to alogic board upon which the processor 1402 and other components describedherein also may be connected. As such, the integrated storage 1418 isintegrated in the computing device. The integrated storage 1418 isconfigured to store an operating system or portions thereof, applicationprograms, data, and other software components described herein.

The removable storage 1420 can include a solid-state memory, a harddisk, or a combination of solid-state memory and a hard disk. In someembodiments, the removable storage 1420 is provided in lieu of theintegrated storage 1418. In other embodiments, the removable storage1420 is provided as additional optional storage. In some embodiments,the removable storage 1420 is logically combined with the integratedstorage 1418 such that the total available storage is made available andshown to a user as a total combined capacity of the integrated storage1418 and the removable storage 1420.

The removable storage 1420 is configured to be inserted into a removablestorage memory slot (not shown) or other mechanism by which theremovable storage 1420 is inserted and secured to facilitate aconnection over which the removable storage 1420 can communicate withother components of the computing device, such as the processor 1402.The removable storage 1420 may be embodied in various memory cardformats including, but not limited to, PC card, CompactFlash card,memory stick, secure digital (“SD”), miniSD, microSD, universalintegrated circuit card (“UICC”) (e.g., a subscriber identity module(“SIM”) or universal SIM (“USIM”)), a proprietary format, or the like.

It can be understood that one or more of the memory components 1404 canstore an operating system. According to various embodiments, theoperating system includes, but is not limited to, SYMBIAN OS fromSYMBIAN LIMITED, WINDOWS MOBILE OS from Microsoft Corporation ofRedmond, Wash., WINDOWS PHONE OS from Microsoft Corporation, WINDOWSfrom Microsoft Corporation, PALM WEBOS from Hewlett-Packard Company ofPalo Alto, Calif., BLACKBERRY OS from Research In Motion Limited ofWaterloo, Ontario, Canada, IOS from Apple Inc. of Cupertino, Calif., andANDROID OS from Google Inc. of Mountain View, Calif. Other operatingsystems are contemplated.

The network connectivity components 1406 include a wireless wide areanetwork component (“WWAN component”) 1422, a wireless local area networkcomponent (“WLAN component”) 1424, and a wireless personal area networkcomponent (“WPAN component”) 1426. The network connectivity components1406 facilitate communications to and from a network 1428, which may bea WWAN, a WLAN, or a WPAN. Although a single network 1428 isillustrated, the network connectivity components 1406 may facilitatesimultaneous communication with multiple networks. For example, thenetwork connectivity components 1406 may facilitate simultaneouscommunications with multiple networks via one or more of a WWAN, a WLAN,or a WPAN.

The network 1428 may be a WWAN, such as a mobile telecommunicationsnetwork utilizing one or more mobile telecommunications technologies toprovide voice and/or data services to a computing device utilizing thecomputing device architecture 1400 via the WWAN component 1422. Themobile telecommunications technologies can include, but are not limitedto, Global System for Mobile communications (“GSM”), Code DivisionMultiple Access (“CDMA”) ONE, CDMA2000, Universal MobileTelecommunications System (“UMTS”), Long Term Evolution (“LTE”), andWorldwide Interoperability for Microwave Access (“WiMAX”). Moreover, thenetwork 1428 may utilize various channel access methods (which may ormay not be used by the aforementioned standards) including, but notlimited to, Time Division Multiple Access (“TDMA”), Frequency DivisionMultiple Access (“FDMA”), CDMA, wideband CDMA (“W-CDMA”), OrthogonalFrequency Division Multiplexing (“OFDM”), Space Division Multiple Access(“SDMA”), and the like. Data communications may be provided usingGeneral Packet Radio Service (“GPRS”), Enhanced Data rates for GlobalEvolution (“EDGE”), the High-Speed Packet Access (“HSPA”) protocolfamily including High-Speed Downlink Packet Access (“HSDPA”), EnhancedUplink (“EUL”) or otherwise termed High-Speed Uplink Packet Access(“HSUPA”), Evolved HSPA (“HSPA+”), LTE, and various other current andfuture wireless data access standards. The network 1428 may beconfigured to provide voice and/or data communications with anycombination of the above technologies. The network 1428 may beconfigured to or adapted to provide voice and/or data communications inaccordance with future generation technologies.

In some embodiments, the WWAN component 1422 is configured to providedual- multi-mode connectivity to the network 1428. For example, the WWANcomponent 1422 may be configured to provide connectivity to the network1428, wherein the network 1428 provides service via GSM and UMTStechnologies, or via some other combination of technologies.Alternatively, multiple WWAN components 1422 may be utilized to performsuch functionality, and/or provide additional functionality to supportother non-compatible technologies (i.e., incapable of being supported bya single WWAN component). The WWAN component 1422 may facilitate similarconnectivity to multiple networks (e.g., a UMTS network and an LTEnetwork).

The network 1428 may be a WLAN operating in accordance with one or moreInstitute of Electrical and Electronic Engineers (“IEEE”) 802.11standards, such as IEEE 802.11a, 802.11b, 802.11g, 802.11n, and/orfuture 802.11 standard (referred to herein collectively as WI-FI). Draft802.11 standards are also contemplated. In some embodiments, the WLAN isimplemented utilizing one or more wireless WI-FI access points. In someembodiments, one or more of the wireless WI-FI access points are anothercomputing device with connectivity to a WWAN that are functioning as aWI-FI hotspot. The WLAN component 1424 is configured to connect to thenetwork 1428 via the WI-FI access points. Such connections may besecured via various encryption technologies including, but not limited,WI-FI Protected Access (“WPA”), WPA2, Wired Equivalent Privacy (“WEP”),and the like.

The network 1428 may be a WPAN operating in accordance with InfraredData Association (“IrDA”), BLUETOOTH, wireless Universal Serial Bus(“USB”), Z-Wave, ZIGBEE, or some other short-range wireless technology.In some embodiments, the WPAN component 1426 is configured to facilitatecommunications with other devices, such as peripherals, computers, orother computing devices via the WPAN.

The sensor components 1408 include a magnetometer 1428, an ambient lightsensor 1430, a proximity sensor 1432, an accelerometer 1434, a gyroscope1436, and a Global Positioning System sensor (“GPS sensor”) 1438. It iscontemplated that other sensors, such as, but not limited to,temperature sensors or shock detection sensors, also may be incorporatedin the computing device architecture 1400.

The magnetometer 1428 is configured to measure the strength anddirection of a magnetic field. In some embodiments the magnetometer 1428provides measurements to a compass application program stored within oneof the memory components 1404 in order to provide a user with accuratedirections in a frame of reference including the cardinal directions,north, south, east, and west. Similar measurements may be provided to anavigation application program that includes a compass component. Otheruses of measurements obtained by the magnetometer 1428 are contemplated.

The ambient light sensor 1430 is configured to measure ambient light. Insome embodiments, the ambient light sensor 1430 provides measurements toan application program stored within one the memory components 1404 inorder to automatically adjust the brightness of a display (describedbelow) to compensate for low-light and high-light environments. Otheruses of measurements obtained by the ambient light sensor 1430 arecontemplated.

The proximity sensor 1432 is configured to detect the presence of anobject or thing in proximity to the computing device without directcontact. In some embodiments, the proximity sensor 1432 detects thepresence of a user's body (e.g., the user's face) and provides thisinformation to an application program stored within one of the memorycomponents 1404 that utilizes the proximity information to enable ordisable some functionality of the computing device. For example, atelephone application program may automatically disable a touchscreen(described below) in response to receiving the proximity information sothat the user's face does not inadvertently end a call or enable/disableother functionality within the telephone application program during thecall. Other uses of proximity as detected by the proximity sensor 1432are contemplated.

The accelerometer 1434 is configured to measure proper acceleration. Insome embodiments, output from the accelerometer 1434 is used by anapplication program as an input mechanism to control some functionalityof the application program. For example, the application program may bea video game in which a character, a portion thereof, or an object ismoved or otherwise manipulated in response to input received via theaccelerometer 1434. In some embodiments, output from the accelerometer1434 is provided to an application program for use in switching betweenlandscape and portrait modes, calculating coordinate acceleration, ordetecting a fall. Other uses of the accelerometer 1434 are contemplated.

The gyroscope 1436 is configured to measure and maintain orientation. Insome embodiments, output from the gyroscope 1436 is used by anapplication program as an input mechanism to control some functionalityof the application program. For example, the gyroscope 1436 can be usedfor accurate recognition of movement within a 3D environment of a videogame application or some other application. In some embodiments, anapplication program utilizes output from the gyroscope 1436 and theaccelerometer 1434 to enhance control of some functionality of theapplication program. Other uses of the gyroscope 1436 are contemplated.

The GPS sensor 1436 is configured to receive signals from GPS satellitesfor use in calculating a location. The location calculated by the GPSsensor 1438 may be used by any application program that requires orbenefits from location information. For example, the location calculatedby the GPS sensor 1438 may be used with a navigation application programto provide directions from the location to a destination or directionsfrom the destination to the location. Moreover, the GPS sensor 1438 maybe used to provide location information to an external location-basedservice, such as E911 service. The GPS sensor 1438 may obtain locationinformation generated via WI-FI, WIMAX, and/or cellular triangulationtechniques utilizing one or more of the network connectivity components1406 to aid the GPS sensor 1438 in obtaining a location fix. The GPSsensor 1438 may also be used in Assisted GPS (“A-GPS”) systems.

The I/O components 1410 include a display 1440, a touchscreen 1442, adata I/O interface component (“data I/O”) 1444, an audio I/O interfacecomponent (“audio I/O”) 1446, a video I/O interface component (“videoI/O”) 1448, and a camera 1450. In some embodiments, the display 1440 andthe touchscreen 1442 are combined. In some embodiments two or more ofthe data I/O component 1444, the audio I/O component 1446, and the videoI/O component 1448 are combined. The I/O components 1410 may includediscrete processors configured to support the various interfacedescribed below, or may include processing functionality built-in to theprocessor 1402.

The display 1440 is an output device configured to present informationin a visual form. In particular, the display 1440 may present graphicaluser interface (“GUI”) elements, text, images, video, notifications,virtual buttons, virtual keyboards, messaging data, Internet content,device status, time, date, calendar data, preferences, map information,location information, and any other information that is capable of beingpresented in a visual form. In some embodiments, the display 1440 is aliquid crystal display (“LCD”) utilizing any active or passive matrixtechnology and any backlighting technology (if used). In someembodiments, the display 1440 is an organic light emitting diode(“OLED”) display. Other display types are contemplated.

The touchscreen 1442 is an input device configured to detect thepresence and location of a touch. The touchscreen 1442 may be aresistive touchscreen, a capacitive touchscreen, a surface acoustic wavetouchscreen, an infrared touchscreen, an optical imaging touchscreen, adispersive signal touchscreen, an acoustic pulse recognitiontouchscreen, or may utilize any other touchscreen technology. In someembodiments, the touchscreen 1442 is incorporated on top of the display1440 as a transparent layer to enable a user to use one or more touchesto interact with objects or other information presented on the display1440. In other embodiments, the touchscreen 1442 is a touch padincorporated on a surface of the computing device that does not includethe display 1440. For example, the computing device may have atouchscreen incorporated on top of the display 1440 and a touch pad on asurface opposite the display 1440.

In some embodiments, the touchscreen 1442 is a single-touch touchscreen.In other embodiments, the touchscreen 1442 is a multi-touch touchscreen.In some embodiments, the touchscreen 1442 is configured to detectdiscrete touches, single touch gestures, and/or multi-touch gestures.These are collectively referred to herein as gestures for convenience.Several gestures will now be described. It should be understood thatthese gestures are illustrative and are not intended to limit the scopeof the appended claims. Moreover, the described gestures, additionalgestures, and/or alternative gestures may be implemented in software foruse with the touchscreen 1442. As such, a developer may create gesturesthat are specific to a particular application program.

In some embodiments, the touchscreen 1442 supports a tap gesture inwhich a user taps the touchscreen 1442 once on an item presented on thedisplay 1440. The tap gesture may be used for various reasons including,but not limited to, opening or launching whatever the user taps. In someembodiments, the touchscreen 1442 supports a double tap gesture in whicha user taps the touchscreen 1442 twice on an item presented on thedisplay 1440. The double tap gesture may be used for various reasonsincluding, but not limited to, zooming in or zooming out in stages. Insome embodiments, the touchscreen 1442 supports a tap and hold gesturein which a user taps the touchscreen 1442 and maintains contact for atleast a pre-defined time. The tap and hold gesture may be used forvarious reasons including, but not limited to, opening acontext-specific menu.

In some embodiments, the touchscreen 1442 supports a pan gesture inwhich a user places a finger on the touchscreen 1442 and maintainscontact with the touchscreen 1442 while moving the finger on thetouchscreen 1442. The pan gesture may be used for various reasonsincluding, but not limited to, moving through screens, images, or menusat a controlled rate. Multiple finger pan gestures are alsocontemplated. In some embodiments, the touchscreen 1442 supports a flickgesture in which a user swipes a finger in the direction the user wantsthe screen to move. The flick gesture may be used for various reasonsincluding, but not limited to, scrolling horizontally or verticallythrough menus or pages. In some embodiments, the touchscreen 1442supports a pinch and stretch gesture in which a user makes a pinchingmotion with two fingers (e.g., thumb and forefinger) on the touchscreen1442 or moves the two fingers apart. The pinch and stretch gesture maybe used for various reasons including, but not limited to, zoominggradually in or out of a website, map, or picture.

Although the above gestures have been described with reference to theuse one or more fingers for performing the gestures, other appendagessuch as toes or objects such as styluses may be used to interact withthe touchscreen 1442. As such, the above gestures should be understoodas being illustrative and should not be construed as being limiting inany way.

In some embodiments, interaction with the user interface 100 andportions thereof, such as the animation pane 106, as described abovewith reference to FIGS. 1 and 2, and input for the direct manipulationof objects to create animations in accordance with the various aspectsdisclosed herein, may be facilitated via the touchscreen 1442. Referringbriefly to FIG. 15, an exemplary tablet device 1500 is illustrated withthe user interface 100 being shown on a display of the tablet device1500 in a landscape mode. The display of the tablet device 1500 is orincludes a touchscreen, such as the touchscreen 1442. As such, thetablet device 1500 is configured to receive a touch input 1502 tointeract with the user interface 100. Although the touch input 1502 isillustrated as a single discrete touch, the touch input 1502alternatively may be multiple discrete touches, a single touch gesture,or a multi-touch gesture, such as those described above.

The data I/O interface component 1444 is configured to facilitate inputof data to the computing device and output of data from the computingdevice. In some embodiments, the data I/O interface component 1444includes a connector configured to provide wired connectivity betweenthe computing device and a computer system, for example, forsynchronization operation purposes. The connector may be a proprietaryconnector or a standardized connector such as USB, micro-USB, mini-USB,or the like. In some embodiments, the connector is a dock connector fordocking the computing device with another device such as a dockingstation, audio device (e.g., a digital music player), or video device.

The audio I/O interface component 1446 is configured to provide audioinput and/or output capabilities to the computing device. In someembodiments, the audio I/O interface component 1444 includes amicrophone configured to collect audio signals. In some embodiments, theaudio I/O interface component 1444 includes a headphone jack configuredto provide connectivity for headphones or other external speakers. Insome embodiments, the audio interface component 1446 includes a speakerfor the output of audio signals. In some embodiments, the audio I/Ointerface component 1444 includes an optical audio cable out.

The video I/O interface component 1448 is configured to provide videoinput and/or output capabilities to the computing device. In someembodiments, the video I/O interface component 1448 includes a videoconnector configured to receive video as input from another device(e.g., a video media player such as a DVD or BLURAY player) or sendvideo as output to another device (e.g., a monitor, a television, orsome other external display). In some embodiments, the video I/Ointerface component 1448 includes a High-Definition Multimedia Interface(“HDMI”), mini-HDMI, micro-HDMI, DisplayPort, or proprietary connectorto input/output video content. In some embodiments, the video I/Ointerface component 1448 or portions thereof is combined with the audioI/O interface component 1446 or portions thereof.

The camera 1450 can be configured to capture still images and/or video.The camera 1450 may utilize a charge coupled device (“CCD”) or acomplementary metal oxide semiconductor (“CMOS”) image sensor to captureimages. In some embodiments, the camera 1450 includes a flash to aid intaking pictures in low-light environments. Settings for the camera 1450may be implemented as hardware or software buttons.

Although not illustrated, one or more hardware buttons may also beincluded in the computing device architecture 1400. The hardware buttonsmay be used for controlling some operational aspect of the computingdevice. The hardware buttons may be dedicated buttons or multi-usebuttons. The hardware buttons may be mechanical or sensor-based.

The illustrated power components 1412 include one or more batteries1452, which can be connected to a battery gauge 1454. The batteries 1452may be rechargeable or disposable. Rechargeable battery types include,but are not limited to, lithium polymer, lithium ion, nickel cadmium,and nickel metal hydride. Each of the batteries 1452 may be made of oneor more cells.

The battery gauge 1454 can be configured to measure battery parameterssuch as current, voltage, and temperature. In some embodiments, thebattery gauge 1454 is configured to measure the effect of a battery'sdischarge rate, temperature, age and other factors to predict remaininglife within a certain percentage of error. In some embodiments, thebattery gauge 1454 provides measurements to an application program thatis configured to utilize the measurements to present useful powermanagement data to a user. Power management data may include one or moreof a percentage of battery used, a percentage of battery remaining, abattery condition, a remaining time, a remaining capacity (e.g., in watthours), a current draw, and a voltage.

The power components 1412 may also include a power connector, which maybe combined with one or more of the aforementioned I/O components 1410.The power components 1412 may interface with an external power system orcharging equipment via a power I/O component.

Based on the foregoing, it should be appreciated that concepts andtechnologies for have been disclosed herein for creating and managinganimations in a presentation application program. Although the subjectmatter presented herein has been described in language specific tocomputer structural features, methodological and transformative acts,specific computing machinery, and computer readable media, it is to beunderstood that the invention defined in the appended claims is notnecessarily limited to the specific features, acts, or media describedherein. Rather, the specific features, acts and mediums are disclosed asexample forms of implementing the claims.

The subject matter described above is provided by way of illustrationonly and should not be construed as limiting. Various modifications andchanges may be made to the subject matter described herein withoutfollowing the example embodiments and applications illustrated anddescribed, and without departing from the true spirit and scope of thepresent invention, which is set forth in the following claims.

We claim:
 1. A computer-readable storage medium comprisingcomputer-executable instructions that, when executed by a computer,cause the computer to: present, on a display that is in communicationwith the computer, a canvas and an object on the canvas; receive amotion path animation effect for the object, the motion path animationeffect comprising a start point, an end point, and a motion path betweenthe start point and the end point; generate a ghost version of theobject; and present, on the display, the object, the ghost version ofthe object, the start point, the end point, and the motion path on thecanvas; wherein the ghost version of the object is presented inproximity to the end point, and the ghost version of the objectrepresents the object after the motion path animation effect has beenperformed.
 2. The computer-readable storage medium of claim 1, furthercomprising computer-executable instructions that, when executed by thecomputer, cause the computer to: receive a selection of the end pointand a subsequent dragging of the end point to a new position on thecanvas; and present, on the display, the end point at the new positionon the canvas and the ghost version of the object in proximity to theend point at the new position on the canvas.
 3. The computer-readablestorage medium of claim 2, wherein the selection is a mouse click andthe subsequent dragging is performed by sustaining the mouse click andmoving a mouse cursor to the new position.
 4. The computer-readablestorage medium of claim 2, wherein the display comprises a touchscreen,the selection is a touch input received by the touchscreen, and thesubsequent dragging is performed by sustaining the touch input through adragging touch gesture.
 5. The computer-readable storage medium of claim1, wherein the ghost version of the object is presented on the displayin response to the motion path being selected.
 6. The computer-readablestorage medium of claim 1, wherein the ghost version of the object beingpresented in proximity to the end point comprises the ghost version ofthe object being presented so as to at least partially intersect the endpoint.
 7. The computer-readable storage medium of claim 1, wherein theghost version of the object being presented in proximity to the endpoint comprises the ghost version of the object so as to no intersectthe end point.
 8. The computer-readable storage medium of claim 1,further comprising computer-executable instructions that, when executedby the computer, cause the computer to: receive an input of a new startpoint and a new end point for the object; and scale the motion path ofthe motion path animation effect to fit between the new start point andthe new end point for the object.
 9. The computer-readable storagemedium of claim 1, further comprising computer-executable instructionsthat, when executed by the computer, cause the computer to: add themotion path animation effect to an animation timeline, the animationtimeline comprising a plurality of animation effects; analyze theplurality of animation effects in the animation timeline to determinewhich of the plurality of animation effects in the animation timelineare triggered by a start with previous trigger or an on mouse clicktrigger, and wherein an animation effect that is triggered by the startwith previous trigger or an on mouse click trigger indicates a start ofa discrete state of one or more discrete states generated for theanimation timeline.
 10. The computer-readable storage medium of claim 9,further comprising computer-executable instructions that, when executedby the computer, cause the computer to: present an animation pane in auser interface, the animation pane comprising a scenes view comprisingone or more scenes, each of the one or more scenes comprising avisualization of a discrete state of the one or more discrete statesgenerated for the animation timeline.
 11. A computer-readable storagemedium comprising computer-executable instructions that, when executedby a computer, cause the computer to: present, on a display that is incommunication with the computer, a canvas and an object on the canvas;receive a motion path animation effect for the object, the motion pathanimation effect comprising a start point, an end point, and a motionpath between the start point and the end point; generate a ghost versionof the object; and present, on the display, the object, the ghostversion of the object, the start point, the end point, and the motionpath on the canvas; wherein the ghost version of the object is presentedin proximity to the start point, and the ghost version of the objectrepresents the object at a beginning of the motion path animationeffect.
 12. The computer-readable storage medium of claim 11, furthercomprising computer-executable instructions that, when executed by thecomputer, cause the computer to: receive a selection of the start pointand a subsequent dragging of the start point to a new position on thecanvas; and present, on the display, the start point at the new positionon the canvas and the ghost version of the object in proximity to thestart point at the new position on the canvas.
 13. The computer-readablestorage medium of claim 12, wherein the selection is a mouse click andthe subsequent dragging is performed by sustaining the mouse click andmoving a mouse cursor to the new position.
 14. The computer-readablestorage medium of claim 12, wherein the display comprises a touchscreen,the selection is a touch input received by the touchscreen, and thesubsequent dragging is performed by sustaining the touch input through adragging touch gesture.
 15. The computer-readable storage medium ofclaim 11, wherein the ghost version of the object is presented on thedisplay in response to the motion path being selected.
 16. Thecomputer-readable storage medium of claim 11, wherein the ghost versionof the object being presented in proximity to the end point comprisesthe ghost version of the object being presented so as to at leastpartially intersect the end point.
 17. The computer-readable storagemedium of claim 11, wherein the ghost version of the object beingpresented in proximity to the end point comprises the ghost version ofthe object so as to no intersect the end point.
 18. Thecomputer-readable storage medium of claim 11, further comprisingcomputer-executable instructions that, when executed by the computer,cause the computer to: receive an input of a new start point and a newend point for the object; and scale the motion path of the motion pathanimation effect to fit between the new start point and the new endpoint for the object.
 19. The computer-readable storage medium of claim11, further comprising computer-executable instructions that, whenexecuted by the computer, cause the computer to: add the motion pathanimation effect to an animation timeline, the animation timelinecomprising a plurality of animation effects; analyze the plurality ofanimation effects in the animation timeline to determine which of theplurality of animation effects in the animation timeline are triggeredby a start with previous trigger or an on mouse click trigger, andwherein an animation effect that is triggered by the start with previoustrigger or an on mouse click trigger indicates a start of a discretestate of one or more discrete states generated for the animationtimeline; and present an animation pane in a user interface, theanimation pane comprising a scenes view comprising one or more scenes,each of the one or more scenes comprising a visualization of a discretestate of the one or more discrete states generated for the animationtimeline.
 20. A computer-readable storage medium comprisingcomputer-executable instructions that, when executed by a computer,cause the computer to: generate a slide presentation comprising one ormore slides; present, on a display that is in communication with thecomputer, a slide canvas of one of the one or more slides; receive anobject for presenting on the slide canvas; present, on the display, theobject on the slide canvas; receive a motion path animation effect forthe object, the motion path animation effect comprising a start point,an end point, and a motion path between the start point and the endpoint comprising a line, an arc, a turn, a shape, a loop, or a custommotion path; present, on the display, the start point, the end point,and the motion path of the motion path animation effect on the slidecanvas; receive a selection of the start point or the end point; inresponse to receiving the selection of the start point or the end point,generate a ghost version of the object, and present, on the display, theghost version of the object in proximity to the start point or inproximity to the end point on the slide canvas based upon the selectionof the start point or the end point; and present, on the display, theslide presentation in a slide show view during which the object isanimated in accordance with the motion path animation effect.